package com.example.project.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.example.project.core.text.Convert;
import com.example.project.entity.Tracker;
import com.example.project.mapper.TrackerMapper;
import com.example.project.service.TrackerService;
import com.example.project.utils.CacheUtils;
import com.example.project.utils.DateUtils;

/**
 * 跟踪类型Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-09-19
 */
@Service
public class TrackerServiceImpl implements TrackerService {
	
	@Autowired
	private TrackerMapper trackersMapper;

	/**
	 * 查询跟踪类型
	 * 
	 * @param id 跟踪类型主键
	 * @return 跟踪类型
	 */
	@Override
	public Tracker selectTTrackersById(Long id) {
		return trackersMapper.selectTTrackersById(id);
	}

	/**
	 * 查询跟踪类型列表
	 * 
	 * @param tTrackers 跟踪类型
	 * @return 跟踪类型
	 */
	@Override
	public List<Tracker> selectTTrackersList(Tracker tTrackers) {
		return trackersMapper.selectTTrackersList(tTrackers);
	}

	/**
	 * 新增跟踪类型
	 * 
	 * @param tTrackers 跟踪类型
	 * @return 结果
	 */
	@Override
	public int insertTTrackers(Tracker tTrackers) {
		tTrackers.setCreateTime(DateUtils.curLocalDateTime());
		CacheUtils.remove("trackerList");
		return trackersMapper.insertTTrackers(tTrackers);
	}

	/**
	 * 修改跟踪类型
	 * 
	 * @param tTrackers 跟踪类型
	 * @return 结果
	 */
	@Override
	public int updateTTrackers(Tracker tTrackers) {
		tTrackers.setUpdateTime(DateUtils.curLocalDateTime());
		CacheUtils.remove("trackerList");
		return trackersMapper.updateTTrackers(tTrackers);
	}

	/**
	 * 批量删除跟踪类型
	 * 
	 * @param ids 需要删除的跟踪类型主键
	 * @return 结果
	 */
	@Override
	public int deleteTTrackersByIds(String ids) {
		CacheUtils.remove("trackerList");
		return trackersMapper.deleteTTrackersByIds(Convert.toStrArray(ids));
	}

	/**
	 * 删除跟踪类型信息
	 * 
	 * @param id 跟踪类型主键
	 * @return 结果
	 */
	@Override
	public int deleteTTrackersById(Long id) {
		CacheUtils.remove("trackerList");
		return trackersMapper.deleteTTrackersById(id);
	}

	@Override
	public List<Tracker> findAllList() {
		// TODO Auto-generated method stub
		return trackersMapper.selectTrackersAll();
	}

	@Override
	public int updateIsInChlog(String trackerIds) {
		// 先将所有跟踪器的isInChlog设置为0（不显示）
		trackersMapper.updateAllIsInChlogToZero();
		
		// 如果传入了选中的跟踪器ID，将这些ID的isInChlog设置为1（显示）
		if (trackerIds != null && !trackerIds.isEmpty()) {
			String[] ids = trackerIds.split(",");
			for (String id : ids) {
				if (!id.trim().isEmpty()) {
					trackersMapper.updateIsInChlogById(Long.parseLong(id.trim()), 1);
				}
			}
		}
		CacheUtils.remove("trackerList");
		return 1;
	}
}
